package lpca.utils.MazeGenerator 
{
	import lpca.model.*;
	import lpca.utils.*;
	/**
	 * ...
	 * @author Figishe
	 * 
	 * Элемент для генерации карты по шаблону
	 * Имеет N сторон и значения в них
	 * Значения - номера элементов по строке\столбцу, в которых есть проход
	 * Используется на первом этапе генерации для построения связанной карты из случайных элементов,
	 * по которой далее каждый элемент будет заменен на одну из соотв. ему шаблонную часть карты.
	 */
	public class MazeGeneratorElement 
	{
		private var map: Array;
		private var sides: Vector.<int>;
		
		
		public static const SIDES_AMOUNT: int = 4; // количество сторон у элемента
		
		public static const SIDE_RANDOM: int = -1; 
		public static const SIDE_NULL: int = 0;
		
		public function MazeGeneratorElement(sides: Vector.<int> = null) 
		{
			var counter: int;
			// копируем значения для сторон из переданного вектора
			if (sides == null)
			{
				trace('В конструктор MazeGeneratorElement передан null-вектор.');
				this.sides = new Vector.<int>(SIDES_AMOUNT, true);
				for (counter = 0; counter < this.sides.length; counter++)
					this.sides[counter] = SIDE_NULL;
			}
			else
			{
				this.sides = new Vector.<int>(SIDES_AMOUNT, true);
				for (counter = 0; counter < this.sides.length; counter++)
					this.sides[counter] = sides[counter];
			}
		}
		
		public function getSideValue(direction: int): int 
		{
			return sides[direction];
		}
		
		public function setSideValue(direction: int, value: int): void
		{
			sides[direction] = value;
		}
		
		public function setRandomSideValue(direction: int): void
		{
			sides[direction] = System.randRange(1, MazeGeneratorSet.ELEMENT_SIZE - 2); // случайная точка на стороне, кроме крайних
		}
		
	}

}